﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FinanSoft.BusinessLayer;
using FinanSoft.Entities;
using FinanSoft.Utilities;

namespace FinanSoft
{
    public partial class frmEditarTemporada : Form
    {
        Season temporadaModificar;

        public frmEditarTemporada(string periodoNombre, int EditedId)
        {
            InitializeComponent();
            txtTemporada.Text = Convert.ToString(EditedId);
            cargarDatos(periodoNombre, EditedId);
            
           
        }
        
        //Funcion que me carga los datos de la temporada para editar
        public void cargarDatos(string periodo, int idTemporada) 
        {
            AccountingPeriod[] periodos = PeriodManager.GetInstance().GetAccountingPeriod();
            for (int u = 0; u < periodos.Length; u++) 
            {
                if (periodo.Equals(periodos[u].Name))
                {
                    for (int e = 0; e < periodos[u].Seasons.Length; e++)
                    {
                        if (periodos[u].Seasons[e].Id == idTemporada)
                        {
                            temporadaModificar = periodos[u].Seasons[e];
                            txtTemporada.Text = periodos[u].Seasons[e].Name;
                            agregarEstado(periodos[u].Seasons[e].Status);
                            break;
                        }
                        else { }
                    }
                }
                else { }
            }
        }
        //Funcion que se encarga de modificar el estado en la interfaz
        public void agregarEstado(int estado) 
        {
            if (estado == PeriodManager.GetInstance().GetSeasonStatus(Constants.OPEN_SEASON_STATUS).Id)
            {
                radAbierto.Select();
            }
            else if (estado == PeriodManager.GetInstance().GetSeasonStatus(Constants.CLOSED_SEASON_STATUS).Id)
            {
                radCerrado.Select();
            }
            else { radAbiertoNoVentas.Select(); }
        }

        // Método que me ayuda a modificar el estado de un periodo
        public void modificarTemporada() 
        {
            PeriodManager.GetInstance().ModifyStatusSeason(temporadaModificar, modEstado());
            
        }
        
        // Metodo que me retorna un entero dependiendo del estado
        public int modEstado() 
        {
            if (radCerrado.Checked) 
            {
                return PeriodManager.GetInstance().GetSeasonStatus(Constants.CLOSED_SEASON_STATUS).Id;
            }
            else if (radAbierto.Checked)
            {
                return PeriodManager.GetInstance().GetSeasonStatus(Constants.OPEN_SEASON_STATUS).Id;

            }
            else { return PeriodManager.GetInstance().GetSeasonStatus(Constants.OPEN_EXCEPT_SALES_SEASON_STATUS).Id; }
            
        }

        private void frmEditarTemporda_Load(object sender, EventArgs e)
        {

        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (temporadaModificar.Status == PeriodManager.GetInstance().GetSeasonStatus(Constants.OPEN_SEASON_STATUS).Id &&
                    ((modEstado() == PeriodManager.GetInstance().GetSeasonStatus(Constants.CLOSED_SEASON_STATUS).Id) ||
                    (modEstado() == PeriodManager.GetInstance().GetSeasonStatus(Constants.OPEN_EXCEPT_SALES_SEASON_STATUS).Id))) 
            {
                modificarTemporada();
                Close();
            }
            else if (temporadaModificar.Status == PeriodManager.GetInstance().GetSeasonStatus(Constants.OPEN_EXCEPT_SALES_SEASON_STATUS).Id &&
                modEstado() == PeriodManager.GetInstance().GetSeasonStatus(Constants.CLOSED_SEASON_STATUS).Id)
            {
                modificarTemporada();
                Close();
            }
            else
            {
                MessageBox.Show(MessageConstants.NO_ALLOWED_STATUS, MessageConstants.TITLE, MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
    
           
                       

        }

        private void cmbPeriodos_SelectedIndexChanged(object sender, EventArgs e)
        {
          //  cmbTemporadas.Items.Clear();
          //  agregarTemporadas(cmbPeriodos.SelectedItem.ToString());
            
        }

        private void cmbTemporadas_SelectedIndexChanged(object sender, EventArgs e)
        {
           /* int num = señalarRadio();
            if (num == 2) 
            {
                radAbierto.Focus();
            }else if (num == 3)
            {
                radCerrado.Focus();
            }
            else { radAbiertoNoVentas.Focus(); }*/
        }
    }
}
